Moved location of unsetting parent window inside gtk_widget_unparent().
authorTristan Van Berkom <tristan.van.berkom@gmail.com>
Fri, 24 Dec 2010 03:35:27 +0000 (12:35 +0900)
committerTristan Van Berkom <tristan.van.berkom@gmail.com>
Thu, 6 Jan 2011 05:39:40 +0000 (14:39 +0900)
Make sure to do this after the widget is unrealized.

gtk/gtkwidget.c

index 20a268b8f9ed517d095ebb01a6c5b5dec5f592d9..0a5e5b859ba2b28261775c267be7213389a68777 100644 (file)
@@ -3714,12 +3714,6 @@ gtk_widget_unparent (GtkWidget *widget)
   g_object_freeze_notify (G_OBJECT (widget));
   nqueue = g_object_notify_queue_freeze (G_OBJECT (widget), _gtk_widget_child_property_notify_context);
 
-  /* Need to unset the parent window early, this can result in 
-   * an additional "hierarchy-changed" propagation if we are removing
-   * a parented GtkWindow from the hierarchy.
-   */
-  gtk_widget_set_parent_window (widget, NULL);
-
   toplevel = gtk_widget_get_toplevel (widget);
   if (gtk_widget_is_toplevel (toplevel))
     _gtk_window_unset_focus_and_default (GTK_WINDOW (toplevel), widget);
@@ -3755,6 +3749,12 @@ gtk_widget_unparent (GtkWidget *widget)
        gtk_widget_unrealize (widget);
     }
 
+  /* Need to unset the parent window early, this can result in 
+   * an additional "hierarchy-changed" propagation if we are removing
+   * a parented GtkWindow from the hierarchy.
+   */
+  gtk_widget_set_parent_window (widget, NULL);
+
   /* Removing a widget from a container restores the child visible
    * flag to the default state, so it doesn't affect the child
    * in the next parent.